Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

158
Views
"MÁSCARA DE RESULTADO DE CONSULTA NO VÁLIDA" PostgreSQL a través de Javascript

He estado tratando de acceder a una función psql usando la función db.func .

La siguiente es mi consulta

 CREATE OR REPLACE FUNCTION play_game(game INT, IN userid INT, IN card INT, OUT uid INT, OUT cid INT, OUT cardfile varchar(255) ) RETURNS SETOF record as $$ DECLARE playorder integer; cardtype varchar(6); cardcolor varchar(10); cardvalue integer; l_cardtype varchar(6); l_cardcolor varchar(10); l_cardvalue integer; cardid integer; Begin -- check if this is the user who has to play SELECT play_order INTO playorder FROM user_game WHERE user_id = userid; IF playorder = 1 THEN -- get card attributes SELECT card_type, card_color, card_value INTO cardtype, cardcolor, cardvalue FROM card WHERE card_id = card; -- get the attributes of the last card that was played for this game select c.card_id, c.card_type, c.card_color, c.card_value INTO cardid, l_cardtype, l_cardcolor, l_cardvalue FROM play_card pc, card c WHERE pc.card_id = c.card_id AND pc.game_id = game AND pc.id = (SELECT MAX(id) FROM play_card WHERE game_id = game); Begin -- check this is the right card to play IF cardcolor = l_cardcolor AND cardtype = 'NOM' THEN INSERT INTO play_card (game_id, user_id, card_id) VALUES (game, userid, card); -- delete card from draw card DELETE FROM game_card WHERE game_id = game and card_id = card; END IF; commit; End; -- move play to the next player Begin IF cardtype = 'NOM' THEN UPDATE user_game SET play_order = play_order - 1 WHERE game_id = game; UPDATE user_game SET play_order = (SELECT count(user_id) from user_game WHERE game_id = game) WHERE game_id = game; ELSE UPDATE user_game SET play_order = 1 + (SELECT count(user_id) from user_game WHERE game_id = game) - play_order WHERE game_id = game; END IF; End; End if; -- get game state and return to Front END RETURN QUERY SELECT gc.user_id, gc.card_id, c.image_file FROM game_card gc, card c WHERE gc.card_id = c.card_id AND gc.game_id = game ORDER BY user_id; END; $$ LANGUAGE plpgsql;

Esta es mi función javascript

 db.func("play_game", { gameId, userId, cardId }) .then((results) => { let card = results; }) .catch((error) => { console.log("error in play_game databse function: ", error); });

Incluso he intentado pasar los parámetros sin el objeto, pero aparece el error que dice "máscara de resultado de consulta no válida"

También da la siguiente pista: Ninguna función coincide con el nombre dado y los tipos de argumentos. Es posible que deba agregar conversiones de tipos explícitas.

Por favor dejame saber que hacer. Cualquier ayuda es apreciada. Gracias :)

about 4 years ago · Santiago Gelvez
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!